package com.xiaoyao.novel.parser;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.log4j.Logger;

import com.xiaoyao.novel.crawl.BaseCrawl;
import com.xiaoyao.novel.pojo.Book;
import com.xiaoyao.novel.pojo.Chapter;
import com.xiaoyao.novel.util.ClassUtil;
import com.xiaoyao.novel.util.FileUtil;

public class ZonghengParser {
	private static Logger logger = Logger.getLogger(ZonghengParser.class);

	/**
	 * 作者,[书名],简介,[类型],图片
	 * 
	 * @param page
	 * @param book
	 * @return
	 */
	public static Book parseDescrib(String page, Book book) {
		page = page.replaceAll("\"", "'");
		page = page.replaceAll("\\s+", " ");
		logger.debug( "页面: " + page);
		String infoRegex = "<div class='book_cover fl'>.+?<img.+?src='(.+?)'.+?<p class='author'><em>作者：(.+?)</em>"
				+ ".+?<div class='info_con'>\\s*<p>(.+?)</p>";
		Pattern infoPattern = Pattern.compile(infoRegex);
		Matcher matcher = infoPattern.matcher(page);
		if (matcher.find()) {
			// book.bookName = matcher.group(1);
			if (ClassUtil.isEmpty(book.picPath)) {
				String picUrl = matcher.group(1);
				String fileName = book.bookId + ".jpg";
				fileName = BaseCrawl.downLoadImage(picUrl, fileName); // 抓图片
				book.picPath = FileUtil.PIC_DIR + fileName;
			}
			book.authorName = matcher.group(2).replaceAll("<.+?>", "");
			if (ClassUtil.isEmpty(book.description)) {
				book.description = matcher.group(3);
			}
		} else {
			logger.error("简介有问题!" + book.crawler);
			logger.error("页面!" + page);
		}
		return book;
	}

	public static List<Chapter> parseBook(String page, Book book) {
		logger.debug("开始解析...");
		page = page.replaceAll("\"", "'");
		page = page.replaceAll("\\s+", " ");
		page = page.replaceFirst( "<div class='quick_fixed'.+", " ");
		// 包含两个.有一个是作品相关
		if (page.matches(".+?<div class='booklist.+?<div class='booklist.+")) {
			page = page.replaceFirst(".+?<div class='booklist.+?<div class='booklist", " ");
		} 
		logger.debug( page);
		List<Chapter> list = new ArrayList<Chapter>();
		book.list = list;
		String bookRegex = "<td.+?>\\s*<a href='(.+?/(.+?)\\.html)' title='.+?'.*?>(.+?)</a>";
		Pattern bookPattern = Pattern.compile(bookRegex);
		Matcher matcher = bookPattern.matcher(page);
		while (matcher.find()) {
			String title = matcher.group(3).trim();
			logger.info(title);
			// 纵横的有的可能是 一二三四
			// if
			// (title.startsWith("引子")||title.startsWith("前言")||title.startsWith("第")||title.matches("\\d+.+"))
			// {
			Chapter chapter = new Chapter();
			list.add(chapter);
			chapter.bookId = book.bookId;
			chapter.chapterUrl = matcher.group(1);
			chapter.webId = matcher.group(2);
			chapter.chapterTitle = title;
			logger.debug(chapter);
			// }
		}
		return list;
	}

	public static void parseChapter(String page, Chapter chapter) {
		page = page.replaceAll("\"", "'");
		page = page.replaceAll("\\s+", " ");
		logger.debug(page);
		String chapterRegex = "<div id='chapterContent' class='content' itemprop='acticleBody'>(.+?)</div>";
		Pattern chapterPattern = Pattern.compile(chapterRegex);
		Matcher matcher = chapterPattern.matcher(page);
		if (matcher.find()) {
			chapter.chapterContent = matcher.group(1);
			// logger.info(chapter.chapterTxtUrl);
		}
	}
}
